package com.hyt.it.ogt.data.model.entity.kw;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hyt.core.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 考试-考生
 * </p>
 *
 * @author 刘恒活
 * @since 2020-05-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("kw_exam_candidate")
@ApiModel(value="考试考生", description="考试考生")
public class ExamCandidate extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "考试ID")
    private String examId;

    @ApiModelProperty(value = "报名考生ID")
    private String candidateId;
    
    @ApiModelProperty(value = "政企考生ID")
    private String govCandidateId;

    @ApiModelProperty(value = "试卷ID")
    private String paperId;

    @ApiModelProperty(value = "试卷版本号")
    private String paperVersion;

    @ApiModelProperty(value = "准考证号")
    private String admissionNumber;
    
    @ApiModelProperty(value = "是否被评卷系统获取，1 是，  0否")
    @TableField("is_acquired")
    private Integer acquired;

    @ApiModelProperty(value = "发送邮件状态：0：未投递，1：投递中，2：已投递，3：投递失败，4：已阅")
    @TableField("is_send_email")
    private Integer sendEmail;

    @ApiModelProperty(value = "发送短信状态：0：未投递，1：投递中，2：已投递，3：投递失败，4：已阅")
    @TableField("is_send_message")
    private Integer sendMessage;

    @ApiModelProperty(value = "是否强制收卷，1表示是，0表示否")
    @TableField("is_forbid_end_exam")
    private Boolean forbidEndExam;  

    @ApiModelProperty(value = "判分状态，1已判分，0待判分")
    private Boolean judgeScoreState;
    
    @ApiModelProperty(value = "迟到允许登录，1表示是，0表示否")
    private Boolean lateAllowLogin;

    /**
     *  考生状态类型 CandidateStatusCode
     */
    @ApiModelProperty(value = "考生状态，0未开考，10：已登录；20：已开考；21:中断；30：已交卷/已完成；40：缺考；50：因故未缺考；")
    private Integer state;

    @ApiModelProperty(value = "客观题总分数")
    private BigDecimal objectiveScore;

    @ApiModelProperty(value = "主观题总分数")
    private BigDecimal subjectiveScore;

    @ApiModelProperty(value = "考生考试实际开始时间")
    private LocalDateTime examBeginDate;

    @ApiModelProperty(value = "考生考试实际结束时间")
    private LocalDateTime examEndDate;

    @ApiModelProperty(value = "剩余时长(毫秒)")
    private Long remainingTime;

    @ApiModelProperty(value = "试卷题目数量")
    private Integer paperQuestionNumber;

    @ApiModelProperty(value = "考生已作答题目数量")
    private Integer candidateAnswerNumber;

    @ApiModelProperty(value = "考生登录时间")
    private LocalDateTime loginTime;

    @ApiModelProperty(value = "考生登录IP地址")
    private String loginIp;

    @ApiModelProperty(value = "考生登录地址，比如广东省深圳市")
    private String loginAddress;

    @ApiModelProperty(value = "考生登录工具，比如桌面谷歌浏览器")
    private String loginTool;

    @ApiModelProperty(value = "机构ID")
    private String officeId;

    @ApiModelProperty(value = "部门ID")
    private String deptId;
    
    @ApiModelProperty(value = "科目ID")
    private String subjectId;

    @ApiModelProperty(value = "报名照片")
    private String enrollPhoto;

    @ApiModelProperty(value = "双监控状态，0表示未验证，1表示验证通过，2表示验证不通过")
    private Integer dualMonitoringStatus;

    @ApiModelProperty(value = "是否在线考试，0(false)：否，1(true)：是")
    private Boolean onlineExamState;
    
    @ApiModelProperty(value = "作弊认定:0未阅,1确定作弊,2无作弊")
    private Integer manualReview;    
    
    @ApiModelProperty(value = "行为分析类型:0无人,1多人,2换人")
    private Integer actionAnalysisType;

    @ApiModelProperty(value = "作弊说明")
    private String cheatDescription;

    @ApiModelProperty(value = "虚拟考场id")
    private String roomId;

    @ApiModelProperty(value = "标记疑似作弊时间")
    private LocalDateTime suspectedCheatDate;

    @ApiModelProperty(value = "考生答题表是否备份1：是 0：否")
    @TableField("is_backup")
    private Integer isBackup;

    @ApiModelProperty(value = "考生事件表是否备份1：是 0：否")
    private Integer logBackup;
    
}
